Математический анализ
Численное дифференцирование
Основные определения
Пусть функция определена в некоторой окрестности точки .
Производной функции в точке называется предел отношения приращения функции к приращению аргумента, когда приращение аргумента стремится к нулю:
Операция нахождения производной от функции называется дифференцированием.
Производная от функции также является функцией от . Она называется производной первого порядка. Производная от производной первого порядка называется производной второго порядка и обозначается . Производная от производной второго порядка называется производной третьего порядка и обозначается и т.д.
Методы численного дифференцирования
Производная от любой элементарной функции может быть найдена аналитически (в виде конечной формулы) с помощью таблицы производных и правил дифференцирования. Однако если функция задается сложной формулой, то аналитическое нахождение производной становится нецелесообразно, а если функция задана в табличном виде, то и вовсе невозможно. В таких случаях используются методы численного дифференцирования.
Методы численного дифференцирования основаны на непосредственном применении формулы определения производной, только приращение аргумента принимают равным некоторому конечному числу. В этом случае для вычисления значений производной в точке используют приближенное равенство:
Это выражение называется аппроксимацией производной с помощью отношения конечных разностей. Пусть приращение аргумента прнимает некотрое малое значение . Различают приближение производной на основе левосторонней разности:
на основе правосторонней разности:
и на основе центральной разности:
Приближение производной на основе левосторонней и правосторонней разности имеет первый порядок точности, т.е. главный член погрешности пропорционален . Приближение производной на основе центральной разности имеет уже второй порядок точности, т.е. является более точным (главный член погрешности пропорционален ).
Существуют приближенные формулы для вычисления производных более высоких порядков. Например, приближение производной второго порядка находится по следующей формуле:
имеющей второй порядок точности.
Непосредственная реализация методов численного дифференцирования в Engee
Пример. Найдем в Engee значение производной от функции в точке по формулам левосторонней, правосторонней и центральной разности.
Зададим функцию , точку и значение приращения аргумента .
f(x) = sin(x);
x0 = pi/4;
h = 1e-6;
Приближение производной на основе левостронней разности:
df1 = (f(x0) - f(x0-h)) / h
Приближение производной на основе правосторонней разности:
df2 = (f(x0+h) - f(x0)) / h
Приближение производной на основе центральной разности:
df3 = (f(x0+h) - f(x0-h)) / (2*h)
Сравним полученные приближенные результаты с точным значением производной:
,
✏️Задание 1
Найдите в Engee производную от функции в точке по формулам левосторонней, правосторонней и центральной разности.
Решение
f(x) = exp(-x^2);
x0 = 1;
h = 1e-6;
df1 = (f(x0) - f(x0-h)) / h;
df2 = (f(x0+h) - f(x0)) / h;
df3 = (f(x0+h) - f(x0-h)) / (2*h);
println("На основе левосторонней разности: ", df1);
println("На основе правосторонней разности: ", df2);
println("На основе центральной разности: ", df3);
✏️Задание 2
Найдите в Engee производную от функции в точке на основе левосторонней, правосторонней и центральной разности.
Решение
f(x) = sqrt(1 + sin(cos(x)));
x0 = pi/2;
h = 1e-6;
df1 = (f(x0) - f(x0-h)) / h;
df2 = (f(x0+h) - f(x0)) / h;
df3 = (f(x0+h) - f(x0-h)) / (2*h);
println("На основе левосторонней разности: ", df1);
println("На основе правосторонней разности: ", df2);
println("На основе центральной разности: ", df3);
Пример. Найдем в Engee приближенное значение производной второго порядка от функции в точке . Пусть приращение аргумента .
f(x) = 2*x^4 + 3*x^3 + 4*x^2 + 5*x + 6;
x0 = 1;
h = 1e-4;
df = (f(x0+h) - 2*f(x0) + f(x0-h)) / (h^2)
Сравним приближенное решение с точным значением производной:
,
,
.
✏️Задание 3
Найдите в Engee производную второго порядка от функции в точке .
Решение
f(x) = 9*x^3 - 8*x^2 + 7*x - 10;
x0 = 5;
h = 1e-4;
df = (f(x0+h) - 2*f(x0) + f(x0-h)) / (h^2)
Сравним приближенное решение с точным значением производной:
,
,
.
Использование функций численного дифференцирования в Engee
В библиотеке Calculus содержится функция derivative, которая численно находит значение производной от функции в заданной точке. Ее аргументами являются имя функции (без аргументов) и значение независимой переменной, при котором небходимо вычислить производную.
Пример. Найдем производную от функции в точке .
using Calculus;
f(x) = tan(x);
df = derivative(f, pi/4)
Сравним приближенное решение с точным значением производной:
,
.
✏️Задание 4
Найдите в Engee производную от функции в точке с помощью функции derivative.
Решение
using Calculus;
f(x) = exp(-x) * cos(x);
df = derivative(f, 1)
Производную второго порядка можно вычислить с помощью функции second_derivative, содержащейся в библиотеке Calculus.
Пример. Найдем производную второго порядка от функции в точке .
using Calculus;
f(x) = tan(x);
df = second_derivative(f, pi/6)
✏️Задание 5
Найдите в Engee производную второго порядка от функции в точке с помощью функции second_derivative.
Решение
using Calculus;
f(x) = sin(x);
df = second_derivative(f, pi/3)
Использование функций символьного дифференцирования в Engee
В библиотеке Calculus имеются средства и для символьного (аналитического) вычисления производной. Это функция differentiate. Ее аргументами являются аналитическое выражение для функции, взятое в кавычки, и имя независимой переменной с двоеточием перед ним.
Пример. Найдем производную от функции с помощью функции differentiate.
using Calculus;
differentiate("exp(-x) * cos(x)", :x)
Обратите внимание на то, что при символьном дифференцировании мы получаем не значение производной в какой-либо точке, а аналитическое выражение для производной в виде функции от .
✏️Задание 6
Найдите в Engee производную от функции с помощью функции differentiate.
Решение
using Calculus;
differentiate("sqrt(1+sin(cos(x)))", :x)